Turbo-product codes (TPC) are a type of error correction codes. During TPC encoding, payload information is arranged in a matrix, and a TPC encoder encodes the rows and columns using component codes. For example, the rows are grouped in some manner (e.g., each group is 1-bit “high”) and encoded. Then, the columns are grouped in some manner (e.g., each group is 1-bit “wide”) and encoded. On the decoder side, this process is reversed. Sometimes, a TPC decoder encounters a stuck error pattern. For example, a TPC codeword being corrected may come to a steady state where the TPC decoder is unable to remove the final errors in the TPC codeword being corrected. Or, the TPC codeword oscillates back and forth between two error states (e.g., having a different number of errors and/or different error locations). New TPC decoding techniques which help when a stuck error pattern is encountered would be desirable.